Micron Document
Fox's Git Mirrors

Node / fr33n0w / rns_sig_bot.git rns://e35de29a61974cd952fde3fe9c8500d5/fr33n0w/rns_sig_bot.git


>πŸ“‘ LXMF Signal Echo Bot

β”‚ LXMF Bot for Reticulum β€” Echo, Signal Stats & Network Info


Author: F (Reticulum Italia) β€” Based on MeteoBot v1.0


πŸ“– Description

Signal Echo Bot is an LXMF bot for the Reticulum network offering:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Command β”‚ Description β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ πŸ” ECHO β”‚ Echoes back the received message with latency and hops β”‚
β”‚ πŸ“Ά SIG β”‚ Shows RSSI, SNR and Link Quality (with RNode LoRa) β”‚
β”‚ πŸ“Š STATUS β”‚ Full report with all available information β”‚
β”‚ ❓ HELP β”‚ Command guide β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The bot automatically creates a persistent RNS identity (saved to disk) and listens on Reticulum as an LXMF peer reachable from any compatible client.


🧩 Requirements

β€’ 🐍 Python 3.7+
β€’ πŸ“‘ Reticulum Network Stack (RNS) already installed and configured
β€’ βœ‰οΈ LXMF (included with RNS or installable separately)

Install dependencies:

T282828
pip install rns

If LXMF is not included:

T282828
pip install lxmf

β”‚ ⚠️ Note: the bot requires Reticulum to be already configured on the system (config files in
β”‚ T383838~/.reticulum or T383838/etc/reticulum). For RNode LoRa, configure the interface in the Reticulum
β”‚ configuration file.


βš™οΈ Installation

1. Create the directory and copy the file:

T282828
mkdir ~/rns_sig_bot
cd ~/rns_sig_bot
# copy rns_sig_bot.py here

2. Verify RNS is installed:

T282828
python3 -c "import RNS; print(RNS.__version__)"

3. Verify LXMF is available:

T282828
python3 -c "import LXMF; print('OK')"


πŸš€ Launch as User (Interactive Mode)

Launch the bot in interactive mode with guided setup:

T282828
cd ~/rns_sig_bot
python3 rns_sig_bot.py

The bot will show an intro screen and ask for:

β€’ 🏷️ Bot display name
β€’ ⏱️ Auto-announce interval (seconds)
β€’ πŸ’° Incoming message stamp cost (T3838380 = free)

Finally it will display the bot's LXMF address, visible to all clients on the Reticulum network.

β”‚ πŸ›‘ To exit: press T383838Ctrl + C


πŸ€– Launch as User (Service Mode, No Prompts)

To launch the bot without interaction (e.g. from T383838screen, T383838tmux, or a script):

T282828
cd ~/rns_sig_bot
python3 rns_sig_bot.py --service --display_name "Signal Echo Bot" --announce_time 300 --stamp_cost 0

Available parameters

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Parameter β”‚ Description β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838--display_name "Bot Name" β”‚ Display name on the network β”‚
β”‚ T383838--announce_time 300 β”‚ Seconds between auto-announces β”‚
β”‚ T383838--stamp_cost 0 β”‚ Stamp cost (T3838380-256, T3838380 = disabled) β”‚
β”‚ T383838--identity ./rns_sig_bot_identity β”‚ Path to persistent identity file β”‚
β”‚ T383838--storage ./tmp_rns_sig_bot β”‚ LXMF storage path β”‚
β”‚ T383838--service β”‚ Enable service mode (no prompts) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


πŸ–₯️ Launch as systemd Service (Auto-Start on Boot)

1. Create the service file:

T282828
sudo nano /etc/systemd/system/rns_sigbot.service

2. Paste the following content (adjust T383838User and T383838WorkingDirectory):

T282828
[Unit]
Description=LXMF Signal Echo Bot
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/rns_sig_bot
ExecStart=/usr/bin/python3 /home/pi/rns_sig_bot/rns_sig_bot.py --service --display_name "Signal Echo Bot" --announce_time 300 --stamp_cost 0
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

3. Reload systemd and enable the service:

T282828
sudo systemctl daemon-reload
sudo systemctl enable rns_sigbot
sudo systemctl start rns_sigbot

4. Check status:

T282828
sudo systemctl status rns_sigbot
sudo journalctl -u rns_sigbot -f

5. Useful commands:

T282828
sudo systemctl stop rns_sigbot # Stop the service
sudo systemctl restart rns_sigbot # Restart the service
sudo systemctl disable rns_sigbot # Disable auto-start


πŸ’¬ Available Commands

From any LXMF client (Sideband, NomadNet, Terminal, etc.) send:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Command β”‚ Alias β”‚ Action β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838echo <text> β”‚ T383838e <text> β”‚ πŸ” Echo the message β”‚
β”‚ T383838sig β”‚ T383838s β”‚ πŸ“Ά Signal statistics β”‚
β”‚ T383838status β”‚ T383838st β”‚ πŸ“Š Full report β”‚
β”‚ T383838help β”‚ T383838h β”‚ ❓ Command guide β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”‚ ℹ️ Note: the remote client can be any LXMF-compatible application, not just Sideband. Works with
β”‚ NomadNet, custom LXMF clients, etc.


πŸ“Ά Signal Stats (RSSI / SNR / Q)

Signal values are available ONLY when the bot is connected to Reticulum via an RNode LoRa interface. On TCP/IP, AutoInterface or other non-radio interfaces, values will be T383838N/A.

The displayed signal is INBOUND to the bot: how the bot "hears" the remote node that sent the message.


πŸ“ Generated Files

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ File / Directory β”‚ Description β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838rns_sig_bot_identity β”‚ Persistent identity private key β”‚
β”‚ T383838./tmp_rns_sig_bot/ β”‚ LXMF storage (messages, cache, etc.) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


πŸ› οΈ Troubleshooting

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Issue β”‚ Solution β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ T383838ModuleNotFoundError: No module named 'RNS' β”‚ ➑️ T383838pip install rns β”‚
β”‚ T383838ModuleNotFoundError: No module named 'LXMF' β”‚ ➑️ T383838pip install lxmf β”‚
β”‚ RSSI/SNR always T383838N/A β”‚ ➑️ Normal without RNode LoRa. Connect an RNode vi… β”‚
β”‚ Hops = T383838Unknown β”‚ ➑️ Normal if sender is direct or no transport is … β”‚
β”‚ Bot does not appear in clients β”‚ ➑️ Verify Reticulum is running (T383838rnsd or master in… β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


πŸ“œ License

Based on LXMF Meteo Bot v1.0 by F, Reticulum Italia.
Open source code. Modify and distribute freely. πŸ†“


<div align="center">

Made with ❀️ for the Reticulum network πŸ“‘

</div>

Served by rngit 1.5.0 - Generated in 0.05s